#ifndef SHELL_H
#define SHELL_H

#ifdef __cplusplus
extern "C" {
#endif

float shell_calculate_expression(char *rx);

int32_t shell_cal_exp_cmd(int32_t n, char **arg);


int32_t shell_do_cmd(char *rx);

int32_t shell_do_fun(char *rx);

int32_t shell_do_cal(char *rx);


int32_t shell_do_notFound(char *rx);

float _cal_delegate(char *exp);

int32_t _assign_var_from_var(Var dst, Var src, int32_t at_dst, int32_t at_src);

int32_t _assign_var_from_string(Var dst, char *val, int32_t at);

int32_t _assign_string_var(Var var, const char *val);

void _var_to_string(char *tx, Var var, int32_t at);

Li_List _values_of_vars(Li_List list);

float _value_from_string_or_var(char *name);
int32_t _ebrace_value_from_string(char* name);
int32_t _ebrace_value_from_string_out(char* name, char** out);
int32_t shell_do_var(char *rx);

#ifdef __cplusplus
}
#endif

#endif // !SHELL_H

